Numerous protocols exist for facilitating communications across computer networks. Some protocols, such as Internet Protocol Security (IPSec), include encryption functionality to protect the data. IPSec, for example, is a protocol suite for secure Internet Protocol (IP) communications that authenticates and encrypts each packet of a communication session. A packet is encrypted at one end of the communication tunnel, transmitted across the tunnel, and decrypted at the destination end of the tunnel. The encryption and decryption of packets is performed bi-directionally.
Encrypting and decrypting packets takes time and can be a primary bottleneck in the communication process, particularly for software-based encryption and decryption solutions that execute on general purpose computers. Further, many network implementations benefit from increased traffic rates which places continued pressure on the encryption/decryption parts of the communication protocols.